import { message } from 'ant-design-vue';
import axios from 'axios';
import store from '../store/index';
const fetchInstance = axios.create({
  baseURL: `${import.meta.env.VITE_API_BASEURL}`,
  timeout: 20000, // 请求超时时间
});
// 请求拦截器
fetchInstance.interceptors.request.use(
  function (config: any) {
    // 在发送请求之前做些处理
    // if (config.method === 'get') {
    // }
    config.headers.Authorization = store.state.loginData.token;
    // config.headers['Access-Control-Allow-Origin'] = '*';
    return config;
  },
  function (error) {
    // 对请求错误做些处理
    return Promise.reject(error);
  }
);

// 响应拦截器
fetchInstance.interceptors.response.use(
  function (response) {
    if (response.status === 200) {
      const data = response.data;
      if (!data) {
        return response.data;
      }
      return data;
    }
    // 对响应数据处理
    return response;
  },
  function (error) {
    if (error.response) {
      const { status } = error.response;
      if (status === 400) {
        message.error('请求参数错误');
      } else if (status === 401) {
        // 2.Token无效（过期）处理
        message.error('Token 无效');
      } else if (status === 403) {
        message.error('没有权限，请联系管理员');
      } else if (status === 404) {
        message.error('请求资源不存在');
      } else if (status >= 500) {
        message.error('服务器错误，请联系管理员');
      }
    } else if (error.request) {
      // 请求发送成功，未收到响应
      message.error('请求超时请重试');
    } else {
      // 意料之外的错误
      message.error(error.message);
    }
    // 对响应错误 处理
    return Promise.reject(error);
  }
);
export { fetchInstance as Fetch };
